]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
popupMenu: Use the parent field for sensitivity chaining
authorJasper St. Pierre <jstpierre@mecheye.net>
Mon, 15 Jul 2013 22:54:15 +0000 (18:54 -0400)
committerJasper St. Pierre <jstpierre@mecheye.net>
Wed, 17 Jul 2013 16:52:22 +0000 (12:52 -0400)
Instead of a signal mess.

https://bugzilla.gnome.org/show_bug.cgi?id=704336

js/ui/popupMenu.js

index 824fe1dccc6a228dcaa8c5f0d46d42141e09b3f8..b8503bf762f6006c664114c4e9c66d7088a056f0 100644 (file)
@@ -66,7 +66,6 @@ const PopupBaseMenuItem = new Lang.Class({
         this.active = false;
         this._activatable = params.reactive && params.activate;
         this._sensitive = true;
-        this.parentSensitive = true;
 
         if (!this._activatable)
             this.actor.add_style_class_name('popup-inactive-menu-item');
@@ -156,7 +155,8 @@ const PopupBaseMenuItem = new Lang.Class({
     },
 
     getSensitive: function() {
-        return this._activatable && this._sensitive && this.parentSensitive;
+        let parentSensitive = this._parent ? this._parent.getSensitive() : true;
+        return this._activatable && this._sensitive && parentSensitive;
     },
 
     setSensitive: function(sensitive) {
@@ -671,7 +671,6 @@ const PopupMenuBase = new Lang.Class({
         this._settingsActions = { };
 
         this._sensitive = true;
-        this.parentSensitive = true;
 
         this._sessionUpdatedId = Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
     },
@@ -688,7 +687,8 @@ const PopupMenuBase = new Lang.Class({
     },
 
     getSensitive: function() {
-        return this._sensitive && this.parentSensitive;
+        let parentSensitive = this._parent ? this._parent.getSensitive() : true;
+        return this._sensitive && parentSensitive;
     },
 
     setSensitive: function(sensitive) {
@@ -794,7 +794,6 @@ const PopupMenuBase = new Lang.Class({
         }));
 
         menuItem._parentSensitiveChangeId = this.connect('sensitive-changed', Lang.bind(this, function() {
-            menuItem.parentSensitive = this.getSensitive();
             menuItem.syncSensitive();
         }));
 
@@ -879,7 +878,6 @@ const PopupMenuBase = new Lang.Class({
                 menuItem.emit('menu-closed');
             });
             let subMenuSensitiveChangedId = this.connect('sensitive-changed', Lang.bind(this, function() {
-                menuItem.parentSensitive = this.getSensitive();
                 menuItem.emit('sensitive-changed');
             }));